import { BASE_URL } from './config.js'
import utils from './utils.js'

const install = (Vue, vm) => {
  // 此为自定义配置参数，具体参数见上方说明
  Vue.prototype.$u.http.setConfig({
    baseUrl: BASE_URL,
    loadingTime: 800,
    showLoading: true, // 是否显示请求中的loading
    loadingText: '请求中...', // 请求loading中的文字提示
    originalData: true, // 是否在拦截器中返回服务端的原始数据
    header: {
      'content-type': 'application/json;charset=UTF-8'
    }
  })
  // 请求拦截部分，如配置，每次请求前都会执行
  Vue.prototype.$u.http.interceptor.request = (config) => {
    let author = uni.getStorageSync('tokenInfo')
    config.header.Authorization =
      'Bearer ' + author && author?.accessToken ? author.accessToken : ''
    console.debug('REQUEST>>>' + JSON.stringify(config))
    return config
  }
  // 响应拦截，如配置，每次请求结束都会执行本方法
  Vue.prototype.$u.http.interceptor.response = (res) => {
    if (res.statusCode != 200) {
      vm.$u.toast('请求失败')
      return false
    }
    let response = res.data
    if (response.code == 0) {
      return response
    }
    if (response.code == 401) {
      // 服务端检测到未登录或登录已过期，则移除本地缓存的用户信息
      uni.removeStorageSync('userInfo')
      utils.goToLogin()
      return false
    }
    return response
  }
}

export default {
  install
}
